package br.ufpi.esii.reqg.entities;

import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;

@Entity
public class Projeto {

	@Id
	private Long id;

	@Column( nullable = false )
	private String sigla;

	private String descricao;

	@ManyToOne( optional = false )
	private Membro gerente;

	@OneToOne( cascade = CascadeType.ALL, fetch = FetchType.EAGER )
	private DadosDoProjeto dados;

	@ManyToMany( cascade = CascadeType.MERGE )
	private Set<Membro> membros;

	@OneToMany( mappedBy = "projeto" )
	private Set<Requisito> requisitos;

	@OneToMany( mappedBy = "projeto" )
	private Set<Criterio> criterios;

	public Projeto() {
		super();
	}

	public String getSigla() {
		return sigla;
	}

	public void setSigla( String sigla ) {
		this.sigla = sigla;
	}

	public String getDescricao() {
		return descricao;
	}

	public void setDescricao( String descricao ) {
		this.descricao = descricao;
	}

	public Membro getGerente() {
		return gerente;
	}

	public void setGerente( Membro gerente ) {
		this.gerente = gerente;
	}

	public Set<Membro> getMembros() {
		return membros;
	}

	public void setMembros( Set<Membro> membros ) {
		this.membros = membros;
	}

	public Set<Requisito> getRequisitos() {
		return requisitos;
	}

	public void setRequisitos( Set<Requisito> requisitos ) {
		this.requisitos = requisitos;
	}

	public Long getId() {
		return id;
	}

	public void setId( Long id ) {
		this.id = id;
	}

	public Set<Criterio> getCriterios() {
		return criterios;
	}

	public void setCriterios( Set<Criterio> criterios ) {
		this.criterios = criterios;
	}

	public DadosDoProjeto getDados() {
		return dados;
	}

	public void setDados( DadosDoProjeto dados ) {
		this.dados = dados;
	}

}
